package org.asiainfo.system.api;

import org.asiainfo.common.core.exception.user.UserException;
import org.asiainfo.system.api.domain.vo.RemoteUserVo;
import org.asiainfo.system.api.model.LoginUser;

import java.util.List;

/**
 * 用户服务
 *
 * @author dotor-ww
 */
public interface RemoteUserService {

    /**
     * 通过用户id查询用户信息
     *
     * @param userId   用户ID
     * @param tenantId 租户ID
     * @return 结果
     */
    LoginUser getUserInfo(Long userId, Long tenantId) throws UserException;

    /**
     * 通过用户名查询用户信息
     *
     * @param username 用户名
     * @return 结果
     */
    LoginUser getUserInfo(String username) throws UserException;

    /**
     * 通过用户ID查询用户信息
     *
     * @param userId 用户ID
     * @return 结果
     */
    RemoteUserVo getUserInfoById(Long userId) throws UserException;

    /**
     * 更新用户信息
     *
     * @param userId   用户ID
     * @param tenantId 租户ID
     * @param ip       IP地址
     */
    void recordLoginInfo(Long userId, Long tenantId, String ip);

    /**
     * 通过用户ID查询用户昵称
     *
     * @param userId 用户ID
     * @return 用户昵称
     */
    String selectNickNameByUserId(Long userId);

    /**
     * 通过用户ID列表查询用户昵称列表
     *
     * @param userIds 用户ID列表
     * @return 用户昵称列表
     */
    List<String> selectNickNameByUserIdList(List<String> userIds);

    /**
     * 通过用户ID查询用户名
     *
     * @param userId 用户ID
     * @return 用户名
     */
    String selectNameByUserId(Long userId);
}
